home *** CD-ROM | disk | FTP | other *** search
/ Day Cry / Day Cry CD.bin / oh_towns / taropyon / he386 / ccisrc / tg300mp.c < prev    next >
Text File  |  1994-09-20  |  18KB  |  629 lines

  1. /*************************************************************************
  2. *    TG300 MULTI PART
  3. *************************************************************************/
  4.  
  5. int        Tg300partAdrOfs[16] = 
  6. {
  7.     0x100,0x200,0x300,0x400,0x500,0x600,0x700,0x800,0x900,0x000,0xA00,0xB00,0xC00,0xD00,0xE00,0xF00
  8. };
  9.  
  10. int        tg300_getPart( char *s )
  11. {
  12.     int        part;
  13.  
  14.     part = atoi(s) - 1;
  15.     if ( part < 0 || part > 15 )
  16.         return (-1);
  17.     return (part);
  18. }
  19.  
  20. /*************************************************************************
  21. *    ELEMENT RESERVE
  22. *-------------------------------------------------------------------------
  23. *    exTG300_elementReserve(part,n)
  24. *        part    üc    1 ü` 16
  25. *************************************************************************/
  26.  
  27. int        exTG300_elementReserve( char *sqr, size_t bufSiz, char *buf, int argc, char **argv )
  28. {
  29.     char    dat[4];
  30.     int        part, v;
  31.  
  32.     if ( argc != 2 )
  33.     {
  34. _ERR:    MM_setErrMsg(sqr,"TG300 \"ELEMENT RESERVE\" error!");
  35.         return(ERR);
  36.     }
  37.     if ( (part = tg300_getPart(argv[0])) < 0 )
  38.         goto _ERR;
  39.     v = atoi(argv[1]);
  40.     if ( v < 0 || v > 32 )
  41.         goto _ERR;
  42.     dat[0] = v;
  43.     return tg300_genMML( sqr, bufSiz, buf, 0x020000+Tg300partAdrOfs[part], 1, dat );
  44. }
  45.  
  46.  
  47. /*************************************************************************
  48. *    BANK SELECT
  49. *-------------------------------------------------------------------------
  50. *    exTG300_bank(part,msb,lsb)
  51. *        part    üc    1 ü` 16
  52. *************************************************************************/
  53.  
  54. int        exTG300_bank( char *sqr, size_t bufSiz, char *buf, int argc, char **argv )
  55. {
  56.     char    dat[4];
  57.     int        part, msb, lsb;
  58.  
  59.     if ( argc != 3 )
  60.     {
  61. _ERR:    MM_setErrMsg(sqr,"TG300 \"BANK SELECT\" error!");
  62.         return(ERR);
  63.     }
  64.     if ( (part = tg300_getPart(argv[0])) < 0 )
  65.         goto _ERR;
  66.     msb = atoi(argv[1]);    if ( msb < 0 || msb > 0x7F )    goto _ERR;
  67.     lsb = atoi(argv[2]);    if ( lsb < 0 || lsb > 0x7F )    goto _ERR;
  68.     dat[0] = msb;
  69.     dat[1] = lsb;
  70.     return tg300_genMML( sqr, bufSiz, buf, 0x020001+Tg300partAdrOfs[part], 2, dat );
  71. }
  72.  
  73.  
  74. /*************************************************************************
  75. *    PROGRAM NUMBER
  76. *-------------------------------------------------------------------------
  77. *    exTG300_programNo(part,prog)
  78. *        part    üc    1 ü` 16
  79. *        prog    üc    1ü`128
  80. *************************************************************************/
  81.  
  82. int        exTG300_programNo( char *sqr, size_t bufSiz, char *buf, int argc, char **argv )
  83. {
  84.     char    dat[4];
  85.     int        part, v;
  86.  
  87.     if ( argc != 2 )
  88.     {
  89. _ERR:    MM_setErrMsg(sqr,"TG300 \"PROGRAM NUMBER\" error!");
  90.         return(ERR);
  91.     }
  92.     if ( (part = tg300_getPart(argv[0])) < 0 )
  93.         goto _ERR;
  94.     v = atoi(argv[1]) - 1;
  95.     if ( v < 0 || v > 127 )
  96.         goto _ERR;
  97.     dat[0] = v;
  98.     return tg300_genMML( sqr, bufSiz, buf, 0x020003+Tg300partAdrOfs[part], 2, dat );
  99. }
  100.  
  101. /*************************************************************************
  102. *    Rcv CHANNEL
  103. *-------------------------------------------------------------------------
  104. *    exTG300_rcvChannel(part,ch)
  105. *    part    üc    1 ü` 16
  106. *    ch        üc    0ü`16
  107. *************************************************************************/
  108.  
  109. int        exTG300_rcvChannel( char *sqr, size_t bufSiz, char *buf, int argc, char **argv )
  110. {
  111.     char    dat[4];
  112.     int        part, v;
  113.  
  114.     if ( argc != 2 )
  115.     {
  116. _ERR:    MM_setErrMsg(sqr,"TG300 \"Rcv CHANNEL\" error!");
  117.         return(ERR);
  118.     }
  119.     if ( (part = tg300_getPart(argv[0])) < 0 )
  120.         goto _ERR;
  121.     v = atoi(argv[1]);
  122.     if ( v == 0 )
  123.         v = 0x10;    /* OFF */
  124.     else
  125.         --v;
  126.     if ( v < 0 || v > 16 )
  127.         goto _ERR;
  128.     dat[0] = v;
  129.     return tg300_genMML( sqr, bufSiz, buf, 0x020004+Tg300partAdrOfs[part], 1, dat );
  130. }
  131.  
  132. /*************************************************************************
  133. *    MONO/POLY MODE
  134. *-------------------------------------------------------------------------
  135. *    exTG300_monoPolyMode(part,mode)
  136. *    part    üc    1 ü` 16
  137. *    mode    üc    0:MONO
  138. *                1:POLY
  139. *************************************************************************/
  140.  
  141. int        exTG300_monoPolyMode( char *sqr, size_t bufSiz, char *buf, int argc, char **argv )
  142. {
  143.     char    dat[4];
  144.     int        part, v;
  145.  
  146.     if ( argc != 2 )
  147.     {
  148. _ERR:    MM_setErrMsg(sqr,"TG300 \"MONO/POLY MODE\" error!");
  149.         return(ERR);
  150.     }
  151.     if ( (part = tg300_getPart(argv[0])) < 0 )
  152.         goto _ERR;
  153.     v = atoi(argv[1]);
  154.     if ( v < 0 || v > 1 )
  155.         goto _ERR;
  156.     dat[0] = v;
  157.     return tg300_genMML( sqr, bufSiz, buf, 0x020015+Tg300partAdrOfs[part], 1, dat );
  158. }
  159.  
  160. /*************************************************************************
  161. *    SAME NOTE NUMBER KEY ON ASSIGN
  162. *-------------------------------------------------------------------------
  163. *    exTG300_keyAssign(part,mode)
  164. *    part    üc    1 ü` 16
  165. *    mode    üc    0:SINGLE
  166. *                1:MULTI
  167. *                2:INST
  168. *************************************************************************/
  169.  
  170. int        exTG300_keyAssign( char *sqr, size_t bufSiz, char *buf, int argc, char **argv )
  171. {
  172.     char    dat[4];
  173.     int        part, v;
  174.  
  175.     if ( argc != 2 )
  176.     {
  177. _ERR:    MM_setErrMsg(sqr,"TG300 \"SAME NOTE NUMBER KEY ON ASSIGN\" error!");
  178.         return(ERR);
  179.     }
  180.     if ( (part = tg300_getPart(argv[0])) < 0 )
  181.         goto _ERR;
  182.     v = atoi(argv[1]);
  183.     if ( v < 0 || v > 2 )
  184.         goto _ERR;
  185.     dat[0] = v;
  186.     return tg300_genMML( sqr, bufSiz, buf, 0x020016+Tg300partAdrOfs[part], 1, dat );
  187. }
  188.  
  189. /*************************************************************************
  190. *    PART MODE
  191. *-------------------------------------------------------------------------
  192. *    exTG300_partMode(part,mode)
  193. *        part    üc    1 ü` 16
  194. *        mode    üc    0:NORMAL
  195. *                    1:DRUM
  196. *************************************************************************/
  197.  
  198. int        exTG300_partMode( char *sqr, size_t bufSiz, char *buf, int argc, char **argv )
  199. {
  200.     char    dat[4];
  201.     int        part, v;
  202.  
  203.     if ( argc != 2 )
  204.     {
  205. _ERR:    MM_setErrMsg(sqr,"TG300 \"PART MODE\" error!");
  206.         return(ERR);
  207.     }
  208.     if ( (part = tg300_getPart(argv[0])) < 0 )
  209.         goto _ERR;
  210.     v = atoi(argv[1]);
  211.     if ( v < 0 || v > 1 )
  212.         goto _ERR;
  213.     dat[0] = v;
  214.     return tg300_genMML( sqr, bufSiz, buf, 0x020017+Tg300partAdrOfs[part], 1, dat );
  215. }
  216.  
  217. /*************************************************************************
  218. *    NOTE SHIFT
  219. *-------------------------------------------------------------------------
  220. *    exTG300_noteShift(part,shift)
  221. *        part    üc    1 ü` 16
  222. *        shift    üc    -24ü`+24
  223. *************************************************************************/
  224.  
  225. int        exTG300_noteShift( char *sqr, size_t bufSiz, char *buf, int argc, char **argv )
  226. {
  227.     char    dat[4];
  228.     int        part, v;
  229.  
  230.     if ( argc != 2 )
  231.     {
  232. _ERR:    MM_setErrMsg(sqr,"TG300 \"NOTE SHIFT\" error!");
  233.         return(ERR);
  234.     }
  235.     if ( (part = tg300_getPart(argv[0])) < 0 )
  236.         goto _ERR;
  237.     v = atoi(argv[1]) + 0x40;
  238.     if ( v < 0x28 || v > 0x58 )
  239.         goto _ERR;
  240.     dat[0] = v;
  241.     return tg300_genMML( sqr, bufSiz, buf, 0x020018+Tg300partAdrOfs[part], 1, dat );
  242. }
  243.  
  244. /*************************************************************************
  245. *    DETUNE
  246. *-------------------------------------------------------------------------
  247. *    exTG300_detune(part,shift)
  248. *    part    üc    1 ü` 16
  249. *    shift    üc    -128ü`+127
  250. *************************************************************************/
  251.  
  252. int        exTG300_detune( char *sqr, size_t bufSiz, char *buf, int argc, char **argv )
  253. {
  254.     char    dat[4];
  255.     int        part, v;
  256.  
  257.     if ( argc != 2 )
  258.     {
  259. _ERR:    MM_setErrMsg(sqr,"TG300 \"DETUNE\" error!");
  260.         return(ERR);
  261.     }
  262.     if ( (part = tg300_getPart(argv[0])) < 0 )
  263.         goto _ERR;
  264.     v = atoi(argv[1]) + 0x80;
  265.     if ( v < 0x00 || v > 0xFF )
  266.         goto _ERR;
  267.     dat[0] = (v >> 4) & 0x0F;
  268.     dat[1] =  v       & 0x0F;
  269.     return tg300_genMML( sqr, bufSiz, buf, 0x020019+Tg300partAdrOfs[part], 2, dat );
  270. }
  271.  
  272. /*************************************************************************
  273. *    VOLUME
  274. *-------------------------------------------------------------------------
  275. *    exTG300_volume(part,vol)
  276. *        part    üc    1 ü` 16
  277. *        vol        üc    0 ü`127
  278. *************************************************************************/
  279.  
  280. int        exTG300_volume( char *sqr, size_t bufSiz, char *buf, int argc, char **argv )
  281. {
  282.     char    dat[4];
  283.     int        part, v;
  284.  
  285.     if ( argc != 2 )
  286.     {
  287. _ERR:    MM_setErrMsg(sqr,"TG300 \"VOLUME\" error!");
  288.         return(ERR);
  289.     }
  290.     if ( (part = tg300_getPart(argv[0])) < 0 )
  291.         goto _ERR;
  292.     v = atoi(argv[1]);
  293.     if ( v < 0 || v > 0x7F )
  294.         got